package br.com.mmm.javacenter.framework.domain;

import br.com.mmm.javacenter.framework.dao.RepositoryBase;
import br.com.mmm.javacenter.framework.entity.EntidadeBase;

public interface Domain<T extends EntidadeBase<T>> {

	public abstract RepositoryBase<T> getRepository(Class<?> klass);
	public abstract RepositoryBase<T> getRepository();
	public abstract void setRepository(RepositoryBase<T> repository);
	
	public void antesIncluir(T t);
	public void incluir(T t);
	public void depoisIncluir(T t);
	
	public void antesAlterar(T t);
	public void alterar(T t);
	public void depoisAlterar(T t);
	
	public void antesExcluir(T t);
	public void excluir(T t);
	public void depoisExcluir(T t);
	
	public void antesDesativar(T t);
	public void desativar(T t);
	public void depoisDesativar(T t);
	
	public void antesAtivar(T t);
	public void ativar(T t);
	public void depoisAtivar(T t);

}